﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Security;

/// <summary>
/// Summary description for PermissionManager
/// </summary>
public class PermissionManager
{
	public PermissionManager()
	{
		//
		// TODO: Add constructor logic here
		//
	}
    string userName = "";
    List<PermissionCode> allPermissions = new List<PermissionCode>();


    public PermissionManager(string userName)
    {
        this.userName = userName;


        string[] roles = Roles.GetRolesForUser(this.userName);
        List<PermissionCode> codes = new List<PermissionCode>();
        foreach (string s in roles)
        {
            allPermissions.Add(ConvertRoleToCode(s));
        }

    }

    public List<PermissionCode> AllPermissions
    {
        get
        {
            return allPermissions;
        }
    }

    public bool HasPermission(PermissionCode permissionCode)
    {
        return allPermissions.Contains(permissionCode);
    }

    private PermissionCode ConvertRoleToCode(string s)
    {
        s = s.ToLower();
        if (s == "quyền chuyên viên xử lý") return PermissionCode.CHUYENVIEN_XULY;
        if (s == "quyền khai thác báo cáo") return PermissionCode.KHAITHAC_BAOCAO;
        if (s == "quyền lãnh đạo cơ quan") return PermissionCode.LANHDAO_COQUAN;

        if (s == "quyền lãnh đạo phòng chuyên môn") return PermissionCode.LANHDAO_PHONG_CHUYENMON;
        if (s == "quyền quản trị hệ thống") return PermissionCode.QUANTRI_HETHONG;
        if (s == "quyền tiếp nhận hồ sơ") return PermissionCode.TIEPNHAN_HOSO;
        if (s == "quyền tra cứu hồ sơ đã trả kết quả") return PermissionCode.TRACUU_HOSO_DA_TRA_KETQUA;
        if (s == "quyền trả kết quả") return PermissionCode.TRA_KETQUA;
        if (s == "quyền ký hồ sơ") return PermissionCode.KY_HOSO;
        if (s == "quyền lãnh đạo văn phòng") return PermissionCode.LANHDAO_VP;
        if (s == "xem toàn bộ hồ sơ") return PermissionCode.XEM_TOANBO_HOSO;


        return PermissionCode.NONE;
    }

    public static string ConvertCodeToRole(PermissionCode code)
    {
        string s = "";
        if (code == PermissionCode.CHUYENVIEN_XULY) s = "Quyền chuyên viên xử lý";
        if (code == PermissionCode.KHAITHAC_BAOCAO) s = "Quyền khai thác báo cáo";
        if (code == PermissionCode.LANHDAO_COQUAN) s = "Quyền Lãnh đạo cơ quan";

        if (code == PermissionCode.LANHDAO_PHONG_CHUYENMON) s = "Quyền Lãnh đạo phòng chuyên môn";
        if (code == PermissionCode.QUANTRI_HETHONG) s = "Quyền quản trị hệ thống";
        if (code == PermissionCode.TIEPNHAN_HOSO) s = "Quyền tiếp nhận hồ sơ";
        if (code == PermissionCode.TRACUU_HOSO_DA_TRA_KETQUA) s = "Quyền tra cứu hồ sơ đã trả kết quả";
        if (code == PermissionCode.TRA_KETQUA) s = "Quyền trả kết quả";
        if (code == PermissionCode.KY_HOSO) s = "Quyền ký hồ sơ";
        if (code == PermissionCode.LANHDAO_VP) s = "Quyền lãnh đạo văn phòng";
        if (code == PermissionCode.XEM_TOANBO_HOSO) s = "Xem toàn bộ hồ sơ";

        return s;
    }

}